package models

import (
	"activity_srv/basic/config"
	"gorm.io/gorm"
	"time"
)

// FaceId 面容ID设置表
type FaceId struct {
	Id            uint32         `gorm:"column:id;type:int UNSIGNED;comment:主键ID;primaryKey;not null;autoIncrement" json:"id"`                                  // 主键ID
	UserId        uint32         `gorm:"column:user_id;type:int UNSIGNED;comment:用户ID;not null;uniqueIndex" json:"user_id"`                                  // 用户ID
	FaceToken     string         `gorm:"column:face_token;type:varchar(255);comment:面容识别Token;not null" json:"face_token"`                                   // 面容识别Token
	FaceData      string         `gorm:"column:face_data;type:text;comment:面容数据;not null" json:"face_data"`                                                // 面容数据（可以是加密后的二进制数据base64编码）
	Status        uint8          `gorm:"column:status;type:tinyint UNSIGNED;comment:状态 1:启用 2:禁用;not null;default:1" json:"status"`                     // 状态 1:启用 2:禁用
	CreatedAt     time.Time      `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3)" json:"created_at"`          // 创建时间
	UpdatedAt     time.Time      `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" json:"updated_at"` // 更新时间
	DeletedAt     gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL" json:"deleted_at"`                                    // 删除时间
}

// TableName 设置表名
func (f *FaceId) TableName() string {
	return "face_id"
}

// GetByUserId 根据用户ID获取面容ID信息
func (f *FaceId) GetByUserId() error {
	return config.DB.Where("user_id = ?", f.UserId).First(f).Error
}

// CreateFaceId 创建面容ID记录
func (f *FaceId) CreateFaceId() error {
	return config.DB.Create(f).Error
}

// UpdateFaceId 更新面容ID记录
func (f *FaceId) UpdateFaceId() error {
	return config.DB.Where("user_id = ?", f.UserId).Updates(f).Error
}

// DeleteFaceId 删除面容ID记录（软删除）
func (f *FaceId) DeleteFaceId() error {
	return config.DB.Where("user_id = ?", f.UserId).Delete(f).Error
}

// GetFaceIdById 根据ID获取面容ID信息
func (f *FaceId) GetFaceIdById() error {
	return config.DB.Where("id = ?", f.Id).First(f).Error
}